﻿using System;
using System.Collections.Generic;
using System.Linq;
using Interfaces;

namespace Models
{
    public class Software : ISoftware
    {
        #region Properties

        public int SoftwareId { get; set; }
        public string Navn { get; set; }
        public DateTime Oprettelsesdato { get; set; }

        public List<Produktnøgle> ProduktNøgler { get; set; }

        public int AntalProduktnøgler { get { return ProduktNøgler.Count; } }
        public int AntalUdlånt { get { return ProduktNøgler.Select(p => p.SoftwareUdlån.Count()).Sum(); } }
        public int ResterendeInstallationer { get { return ProduktNøgler.Select(s => SubtractionHelper(s.Antal, s.AntalUdlånt)).Sum(); } }

        #endregion

        #region Creation

        public Software(int softwareId, string navn, DateTime oprettelsesdato)
        {
            SoftwareId = softwareId;
            Navn = navn;
            Oprettelsesdato = oprettelsesdato;

            ProduktNøgler = new List<Produktnøgle>();
        } 

        #endregion

        #region Methods

        // hjælper med at minus 2 tal, fordi resultatet må mindst være 0
        private int SubtractionHelper(int a, int b)
        {
            return (a - b > 0) ? a - b : 0;
        } 

        #endregion
    }
}
